package com.sx.sx1.lintcode.day717;

public class LC3825 {

    static class Solution {
        /**
         * @param s: A string
         * @return: Whether you can make s a palindrome by changing 1-2 characters
         */
        public boolean validPalindrome(String s) {
            int diff =0;
            int n = s.length();
            int left =0;
            int right = n-1;
            while (left<=right){
                if(s.charAt(left)!=s.charAt(right)){
                    diff++;
                }

                if(diff >2) return false;
                left++;
                right--;
            }
            return true;
        }
    }


    public static void main(String[] args) {
        Solution obj = new Solution();
        System.out.println(obj.validPalindrome("abcda"));
        System.out.println(obj.validPalindrome("abcdccc"));
    }
}

/*
LintCode-Logo
搜索题目、标签、题集
中文
avatar
您有213条未读消息，请及时查看
3825 · 有效回文串（四）预发布
算法
简单
通过率
82%

题目
题解1
笔记
讨论
排名
记录
该题目为预发布题目，如遇到任何问题，请及时通过"题目纠错"联系我们，我们会升级您的账号为VIP作为感谢。
描述
给一个仅由小写英文字母组成的非空字符串 s，可以执行一种操作：将 s 中的 任意字符更改为其他字符。

如果 恰好能执行一次或两次操作后 使 s 变成一个回文串，则返回 true，否则返回 false 。

最短时间刷“透”算法面试：《66页算法宝典》.pdf

微信添加【jiuzhangfeifei】备注【66】领取


1
≤
𝑠
.
𝑙
𝑒
𝑛
𝑔
𝑡
ℎ
≤
1
0
5
1≤s.length≤10
5

s 仅包含小写字母
样例
样例 1：

输入：
s = "abcda"
输出：
true
解释：
将 s[1] 变成 "d"，得到 s = "adcda"
执行一次操作可以使 s 变成回文串
样例 2：

输入：
s = "abcdccc"
输出：
true
解释：
将 s[0] 和 s[1] 变成 "c"，得到 s = "cccdccc"
执行两次操作可以使 s 变成回文串
样例 3：

输入：
s = "abcdefg"
输出：
false
解释：
无法在两次操作内将 s 变成回文串
标签
相关题目

415
有效回文串
中等

891
有效回文串（二）
中等

3809
有效回文串（三）
困难
推荐课程

系统设计 System Design 2024版
数据库、API、GFS、视频流等16大系统设计详解，实战练习拿下面试/晋升“拦路虎”
7/1859
已开启智能提示
发起考试
15 分 00 秒
123456789

控制台
        历史提交

 */